671. 二叉树中第二小的节点
671. 二叉树中第二小的节点
Similar Question
leading to the advanced question
Solution Tips
方案一: DFS
var findSecondMinimumValue = function(root) {
// 特殊遍历, 突出一个剪枝
// 等于较小的那个, 那么 root 一定是全部节点里面最小的那个
// 往更大的那个找, 如果左右节点相等, 就两个都找
// 剪枝就是大的那个方向不用找, 就找相等的那个
let min = root.val;
let secondMin = Number.MAX_SAFE_INTEGER;
dfs(root);
return secondMin;
function dfs(node) {
if (node === null) return;
if (node.val === min) {
dfs(node.left);
dfs(node.right);
}
else if (node.val > min) {
secondMin = Math.min(secondMin, node.val);
}
}
};